#include <iostream>
#include <algorithm>

using namespace std;

void vPrint(int val) {
    cout << val << " ";
}

//vector存放内置数据类型
void test() {
    vector<int> v;//创建vector容器对象，并且通过模板参数指定容器中存放的数据的类型
    v.push_back(10);//向容器中放数据
    v.push_back(20);
    v.push_back(30);
    v.push_back(40);
    //每一个容器都有自己的迭代器，迭代器是用来遍历容器中的元素
    vector<int>::iterator vBegin = v.begin();//返回迭代器，这个迭代器指向容器中第一个数据
    vector<int>::iterator vEnd = v.end();//返回迭代器，这个迭代器指向容器元素的最后一个元素的下一个位置

    //第一种遍历方式
    while (vBegin != vEnd) {
        cout << *vBegin << " ";
        vBegin++;
    }
    cout << endl;

    //第二种遍历方式
    for (vector<int>::iterator it = v.begin(); it != v.end(); ++it) {
        cout << *it << " ";
    }
    cout << endl;

    //第三种遍历方式
    //使用STL提供标准遍历算法 头文件 algorithm
    for_each(v.begin(), v.end(), vPrint);// 回调函数
    cout << endl;
}

int main() {
    test();
    return 0;
}